; (function () {
    return
    const Car = function (brand) {
        this.brand = brand
        this.wheel = 4
    }
    // 这里添加的方法给实例用的
    Car.prototype.driver = function () {
        console.log(this.brand + '启动出发')
    }
    // 现在给这个函数添加一个静态方法. 因为函数也是对象
    Car.isCar = function (car) {
        if (car.wheel === 4) {
            console.log("是车")
        } else {
            console.log("不是车")
        }
    }
    let car = new Car("本田")
    car.driver(); //丰田启动出发
    Car.isCar(car) //是车
})();
// class 就是包装上面的语法糖
// 区别就是 上面的可以当个函数, 这个class不行,必须new
class Car {
    // 这里是构造函数
    constructor(brand) {
        this.brand = brand
        this.wheel = 4
    }
    // 原型的方法
    driver() {
        console.log(this.brand + '启动出发111')
    }
    //这里是静态方法
    static isCar(car) {
        if (car.wheel === 4) {
            console.log("是车111")
        } else {
            console.log("不是车")
        }
    }

}
// 这里  
// console.log(typeof Car); //function
let car = new Car("丰田")
car.driver(); //丰田启动出发
Car.isCar(car) //是车


// class 在被实例化的时候,里面方法会不会先执行一遍
; (function () {
    return
    class Fun{
        constructor(name){
            this.name = name
            // 这里面的get()会执行,但是有个顺序问题,就是如果里面用到的属性没有先初始化,就会nan
            this.value = this.get()

            
        }
        
        get(){
            console.log("我被执行了")
            return 5 + isNaN(this.name)
        }
    }
    fun = new Fun("孙文")
    console.log(fun.value)
})();